import com.sun.deploy.util.StringUtils;
import org.omg.PortableInterceptor.INACTIVE;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.core.env.SystemEnvironmentPropertySource;

import java.io.File;
import java.io.IOException;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;
import java.util.stream.Collectors;

/**
 * .
 *
 * @author Xu Yayuan
 * @date 2021/11/3
 */
public class TestSplitDemo {
    public static void main(String[] args) {
        List<String> str = new ArrayList<>();
        str.add("01");
        str.add("05");
        str.add("02");
        str.add("04");
        str.add("03");
        List<Integer> integers = str.stream().map(Integer::parseInt).sorted().collect(Collectors.toList());
        System.out.println("测试排序;;;;;"+integers);
        System.out.println("测试排序;;;;;最大值"+integers.get(integers.size()-1));
        System.out.println("测试;;;;;"+str.stream().map(String::valueOf).collect(Collectors.joining(",")));
        List<String> fullPointName2 = new ArrayList<>();
        fullPointName2.add("W3.GN01.ALARM1");
        fullPointName2.add("W3.GN01.SCJP");
        fullPointName2.add("W3.FAN3.POINT10");
        fullPointName2.add("W3.GN01.XSCL");
        fullPointName2.add("W3.GN01.LJYXSC");
        fullPointName2.add("W3.GN01.LJCPSL");
        fullPointName2.add("W3.GN01.LJCL");
        fullPointName2.add("W3.GN01.KJSCLJ");
        fullPointName2.add("W3.GN01.GZRYXSC");
        fullPointName2.add("W3.GN01.GZRTJSC");
        fullPointName2.add("W3.GN01.GZRDJSC");
        fullPointName2.add("W3.GN01.EDCPCS");
        fullPointName2.add("W3.GN01.DTLJSJ");
        String kdName = StringUtils.join(Arrays.asList(fullPointName2.toArray()), ",");
        System.out.println("kdName:"+kdName);
        String tns = GNUtil.FormartGNs(kdName);
        System.out.println("tns: "+ tns);
        List<String> TNs = GNUtil.FormartGN(kdName);
        System.out.println("TNs: "+ TNs);
        System.out.println("时间戳："+ convertTimeToLong("2018-05-29 13:52:50"));

    }

    /**
     * 将字符串转日期成Long类型的时间戳，格式为：yyyy-MM-dd HH:mm:ss
     */
    public static Long convertTimeToLong(String time) {
        DateTimeFormatter ftf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        LocalDateTime parse = LocalDateTime.parse(time, ftf);
        return LocalDateTime.from(parse).atZone(ZoneId.systemDefault()).toInstant().toEpochMilli();
    }


//    /**
//     * 分页获取历史快照
//     * @param pointNames 全局点名
//     * @param time 时间
//     * @param pagingParam 分页信息
//     */
//    default Map<String, PointValue> getHistoryPage(
//            Collection<String> pointNames, Date time, PagingParam pagingParam) {
//        throw new UnsupportedOperationException();
//    }


//    /**
//     * 分页获取历史区间快照
//     * @param pointNames 全局点名
//     * @param from 开始时间
//     * @param to 结束时间
//     * @param valueMode 点类型
//     * @param interval 间隔
//     * @param pagingParam 分页信息
//     */
//    default Map<String, List<PointValue>> getHistorySpanPage(
//            Collection<String> pointNames, Date from, Date to, ValueMode valueMode, int interval, PagingParam pagingParam) {
//        throw new UnsupportedOperationException();
//    }


//    @Test
//    void getHistoryPage() {
//
//        List<String> fullPointName2 = new ArrayList<>();
//        fullPointName2.add("W3.GN01.ALARM1");
//        fullPointName2.add("W3.GN01.SCJP");
//        fullPointName2.add("W3.FAN3.POINT10");
//        fullPointName2.add("W3.GN01.XSCL");
//        fullPointName2.add("W3.GN01.LJYXSC");
//        fullPointName2.add("W3.GN01.LJCPSL");
//        fullPointName2.add("W3.GN01.LJCL");
//        fullPointName2.add("W3.GN01.KJSCLJ");
//        fullPointName2.add("W3.GN01.GZRYXSC");
//        fullPointName2.add("W3.GN01.GZRTJSC");
//        fullPointName2.add("W3.GN01.GZRDJSC");
//        fullPointName2.add("W3.GN01.EDCPCS");
//        fullPointName2.add("W3.GN01.DTLJSJ");
//
//        PagingParam pagingParam = new PagingParam();
//        pagingParam.setPageIndex("0");
//        pagingParam.setPageSize("5");
//        Date startDate = new Date();
////    Map<String, PointValue> map2 =
////            rtdbService.getHistoryPage(fullPointName2, startDate, pagingParam);
//        // int[] ids = new int[] {3608, 3061};
//        //
//        // rtdbService.getHistoryByIds(ids, start, end);
//    }


//    @Override
//    public Map<String, PointValue> getHistoryPage(
//            Collection<String> pointNames, Date time, PagingParam pagingParam) {
//        return execute(
//                (conn) -> {
//                    Map<String, PointValue> result = new HashMap<>();
//                    String[] pointNameArray = pointNames.toArray(new String[0]);
//                    if (CollectionUtils.isNotEmpty(pointNames)) {
//                        StringBuilder baseSql = new StringBuilder();
//                        baseSql
//                                .append("select PN, TM, AV, GN, RT, DS, EU, ED from Archive where GN in (")
//                                .append(
//                                        GNUtil.FormartGNs(StringUtils.join(Arrays.asList(pointNames.toArray()), ",")))
//                                .append(")")
//                                .append(" and TM = '")
//                                .append(sdf.format(time))
//                                .append("'")
//                                .append(" and mode = '")
//                                .append("raw")
//                                .append("'")
//                                .append(" and interval  = '")
//                                .append("1")
//                                .append("'")
//                                .append("limit ")
//                                .append(pagingParam.getPageIndex())
//                                .append(",")
//                                .append(pagingParam.getPageSize());
//                        try (OPResultSet resultSet = conn.execSQL(String.valueOf(baseSql))) {
//                            while (resultSet.next()) {
//                                PointValue pv = new PointValue();
//                                // 点名
//                                pv.setPointName(resultSet.getString("PN"));
//                                // 更新时间
//                                pv.setTime(resultSet.getLong("TM") * 1000);
//                                // 最后更新值
//                                pv.setValue(resultSet.getDouble("AV"));
//                                Map<String, Object> extend = new HashMap<>(6);
//                                // 全点名
//                                extend.put("gn", resultSet.getString("GN"));
//                                // 点的类型
//                                extend.put("rt", resultSet.getInt("RT"));
//                                // 点的状态
//                                extend.put("ds", resultSet.getInt("DS"));
//                                // 点的量纲
//                                extend.put("eu", resultSet.getString("EU"));
//                                // 点的描述
//                                extend.put("ed", resultSet.getString("ED"));
//                                pv.setExtend(extend);
//                                result.put(resultSet.getString("GN"), pv);
//                            }
//                        }
//                    }
//                    return result;
//                });
//    }




//    @Override
//    public Map<String, List<PointValue>> getHistorySpanPage(
//            Collection<String> pointNames,
//            Date from,
//            Date to,
//            ValueMode valueMode,
//            int interval,
//            PagingParam pagingParam) {
//        return execute(
//                (conn) -> {
//                    Map<String, List<PointValue>> result = new HashMap<>();
//                    String[] pointNameArray = pointNames.toArray(new String[0]);
//                    if (CollectionUtils.isNotEmpty(pointNames)) {
//                        StringBuilder baseSql = new StringBuilder();
//                        baseSql
//                                .append("select PN, TM, AV, GN, RT, DS, EU, ED from Archive where GN in (")
//                                .append(
//                                        GNUtil.FormartGNs(StringUtils.join(Arrays.asList(pointNames.toArray()), ",")))
//                                .append(")")
//                                .append(" and TM between '")
//                                .append(sdf.format(from))
//                                .append("'")
//                                .append("and '")
//                                .append(sdf.format(to))
//                                .append("'")
//                                .append(" and mode = '")
//                                .append(valueMode)
//                                .append("'")
//                                .append(" and interval  = '")
//                                .append(interval)
//                                .append("'")
//                                .append("limit ")
//                                .append(pagingParam.getPageIndex())
//                                .append(",")
//                                .append(pagingParam.getPageSize());
//                        try (OPResultSet resultSet = conn.execSQL(String.valueOf(baseSql))) {
//                            List<PointValue> list = new ArrayList<>();
//                            while (resultSet.next()) {
//                                PointValue pv = new PointValue();
//                                // 点名
//                                pv.setPointName(resultSet.getString("PN"));
//                                // 更新时间
//                                pv.setTime(resultSet.getLong("TM") * 1000);
//                                // 最后更新值
//                                pv.setValue(resultSet.getDouble("AV"));
//                                Map<String, Object> extend = new HashMap<>(6);
//                                // 全点名
//                                extend.put("gn", resultSet.getString("GN"));
//                                pv.setExtend(extend);
//                                if (result.containsKey(resultSet.getString("GN"))) {
//                                    List<PointValue> ori = result.get(resultSet.getString("GN"));
//                                    ori.add(pv);
//                                    result.put(resultSet.getString("GN"), ori);
//                                } else {
//                                    List<PointValue> newPoints = new ArrayList<>();
//                                    newPoints.add(pv);
//                                    result.put(resultSet.getString("GN"), newPoints);
//                                }
//                            }
//                        }
//                        if (pointNames.size() != result.size()) {
//                            Set<String> fullPointNameSet = result.keySet();
//                            List<String> diffList = ListUtils.removeAll(pointNames, fullPointNameSet);
//                            diffList.forEach(obj -> result.put(obj, null));
//                        }
//                    }
//                    return result;
//                });
//    }

}



